package com.util;
/**
 * 分页类
 * @author WANGYONG
 * @version 1.0
 * @since 2012-01-24
 */
public class Pager {
	/**
	 * 总行数
	 */
	private int totalRows; 
	/**
	 * 每页显示的行数
	 */
	private int pageSize = 10; 
	/**
	 * 当前页号
	 */
	private int currentPage; 
	/**
	 * 总页数
	 */
	private int totalPages; 
	/**
	 * 当前页在数据库中的起始行
	 */
	private int startRow; 

	/**
	 * 带参数的构造方法
	 * @param _totalRows 总行数
	 */
	public Pager(int _totalRows) {
		totalRows = _totalRows;
		totalPages = totalRows / pageSize;
		int mod = totalRows % pageSize;
		if (mod > 0) {
			totalPages++;
		}
		currentPage = 1;
		startRow = 0;
	}
	/**
	 * 当前页在数据库中的起始行
	 * @return 当前页在数据库中的起始行
	 */
	public int getStartRow() {
		return startRow;
	}
	/**
	 * 总页数
	 * @return 总页数
	 */
	public int getTotalPages() {
		return totalPages;
	}
	/**
	 * 当前页号
	 * @return 当前页号
	 */
	public int getCurrentPage() {
		return currentPage;
	}
	/**
	 * 每页显示的行数
	 * @return 每页显示的行数
	 */
	public int getPageSize() {
		return pageSize;
	}
	/**
	 * 总行数
	 * @param totalRows 总行数
	 */
	public void setTotalRows(int totalRows) {
		this.totalRows = totalRows;
	}
	/**
	 * 当前页在数据库中的起始行
	 * @param startRow 当前页在数据库中的起始行
	 */
	public void setStartRow(int startRow) {
		this.startRow = startRow;
	}
	/**
	 * 总页数
	 * @param totalPages 总页数
	 */
	public void setTotalPages(int totalPages) {
		this.totalPages = totalPages;
	}
	/**
	 * 当前页号
	 * @param currentPage 当前页号
	 */
	public void setCurrentPage(int currentPage) {
		this.currentPage = currentPage;
	}
	/**
	 * 每页显示的行数 
	 * @param pageSize 每页显示的行数 
	 */
	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}
	/**
	 * 总行数
	 * @return  总行数
	 */
	public int getTotalRows() {
		return totalRows;
	}
	/**
	 * 首页
	 */
	public void first() {
		currentPage = 1;
		startRow = 0;
	}
	/**
	 * 上一页
	 */
	public void previous() {
		if (currentPage == 1) {
			return;
		}
		currentPage--;
		startRow = (currentPage - 1) * pageSize;
	}
	/**
	 * 下一页
	 */
	public void next() {
		if (currentPage < totalPages) {
			currentPage++;
		}
		startRow = (currentPage - 1) * pageSize;
	}
	/**
	 * 最后一页
	 */
	public void last() {
		currentPage = totalPages;
		startRow = (currentPage - 1) * pageSize;
	}
	/**
	 * 跳转到指定页面
	 * @param _currentPage 指定页数值
	 */
	public void refresh(int _currentPage) {
		currentPage = _currentPage;
		if (currentPage > totalPages) {
			last();
		}
	}
}
